/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.beans;

import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.colegiatura.bc.EspecialidadDelegate;
import org.cip.esymons.general.be.Especialidad;
import org.cip.esymons.general.be.Escuela;
import org.cip.esymons.general.be.Universidad;
/**
 *
 * @author ADMINISTRADOR
 */
public class especialidadController {

    private EspecialidadDelegate delegado;
    private Especialidad especialidad;
    private Escuela escuela;
    private Universidad universidad;

    public especialidadController() {

        delegado = new EspecialidadDelegate();
        especialidad = new Especialidad();
        escuela = new Escuela();
        universidad = new Universidad();

    }

    public Universidad getUniversidad() {
        return universidad;
    }

    public void setUniversidad(Universidad universidad) {
        this.universidad = universidad;
    }

    public EspecialidadDelegate getDelegado() {
        return delegado;
    }

    public void setDelegado(EspecialidadDelegate delegado) {
        this.delegado = delegado;
    }

    public Especialidad getEspecialidad() {
        return especialidad;
    }

    public void setEspecialidad(Especialidad especialidad) {
        this.especialidad = especialidad;
    }

    public Escuela getEscuela() {
        return escuela;
    }

    public void setEscuela(Escuela escuela) {
        this.escuela = escuela;
    }

    public Especialidad buscaPorCodigo(Integer codigo){

        return delegado.find(codigo);
    }

    public List<Especialidad> getListaEspecialidad(){

        return delegado.findAll();
    }

    public String nuevo(){

        universidad = new Universidad();
        escuela = new Escuela();
        especialidad = new Especialidad();

        return "ir_a_nuevo";
    }

    public String grabar(){

        try{
        especialidad.setEspActivo(1);
//        especialidad.setEscuela(escuela);
        delegado.create(especialidad);
        inicializa();
        }catch(Exception ex){
            return null;
        }
        mostrarMensaje("INFO: ", "Especialidad registrada satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return "ir_a_listar";
    }

    public String editar(){

        try{
        delegado.edit(especialidad);
        inicializa();
        }catch(Exception ex){
            return null;
        }
        mostrarMensaje("INFO: ", "Especialidad registrada satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return "ir_a_listar";
    }

    public String remover(){

        try{
        delegado.remove(especialidad);
        inicializa();
        }catch(Exception ex){
            return null;
        }
        return null;
    }

    public String inicializa(){
        especialidad = new Especialidad();
        escuela = new Escuela();
        universidad = new Universidad();
        return "";
    }

    public SelectItem[] getSelectListaItem(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Especialidad> listaEspecialidad = delegado.buscaPorEscuela(escuela);
        selects = new SelectItem[listaEspecialidad.size()];
        int cont = 0;
        for(Especialidad esp : listaEspecialidad){

            SelectItem item = new SelectItem(esp, esp.getEspDescripcion());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen especialidades");
            selects[0] = item;
            return selects;
      }

    }

    public SelectItem[] getSelectListaEspecialidades(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Especialidad> listaEspecialidad = delegado.findAll();
        selects = new SelectItem[listaEspecialidad.size()];
        int cont = 0;
        for(Especialidad esp : listaEspecialidad){

            SelectItem item = new SelectItem(esp, esp.getEspDescripcion());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen especialidades");
            selects[0] = item;
            return selects;
      }

    }

    public SelectItem[] getSelectListaEspXUniv(){

      try{
        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        facultadController fc = (facultadController)FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(FacesContext.getCurrentInstance(), "facultadController");
        List<Especialidad> listaEspecialidad = delegado.buscaPorUniversidad(fc.getUniversidad());
        selects = new SelectItem[listaEspecialidad.size()];
        int cont = 0;
        for(Especialidad espUniv : listaEspecialidad){

            SelectItem item = new SelectItem(espUniv, espUniv.getEspDescripcion());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen especialidades");
            selects[0] = item;
            return selects;
      }

    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }
}
